Linux 用户名文件

        Linux 用户名文件是 /etc/passwd 可以说是 Linux 系统中最重要的文件之一。如果这个文件出了问题,则无法正常登录 Linux 系统。

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]# cat /etc/passwd | head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

        “head” 前面的 “|” 叫做管道符,它的作用是把前面的命令的输出再输入给后面的命令。

用户名文件每个字段的含义

        /etc/passwd 分割成 7 个字段,每个字段的含义是:
        1.用户名
        如第一行中的 root 就是用户名,代表用户帐号的字符串。用户名字符串可以是大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位为点时,另外减号也不建议使用,因为庸医造成混淆。

        2.帐号口令
        第二字段存放的就是该帐号的口令。为什么是 ‘x’ 呢?早起的 unix 系统口令是存放在这里,但基于安全因素,后来就将其到 ‘/etc/shadow’ 中了,这里只用一个 ‘x’ 代替。

        3.用户标识号
        这个数字代表用户标识号,也叫做 uid 。系统识别用户身份就是通过这个数字, 0 就是 root ,也就是说可以修改 test 用户的 uid 为 0 ,那么系统就会认为 root 和 test 为同一个账户。通常 uid 的取值范围是 0-65535 (但实际上已经可以支持到 4294967294),0 是超级用户 (root)的表示号,1-499 有系统保留,作为管理帐号,普通用户的表示号从 500 开始,如果自定义建立一个普通用户,可以看到该账户的标识号是大于或等于 500 的。

        4.组表示号
        这个数字表示组标识号,也叫做 gid 这个字段对应着 /etc/group 中的一条记录,其实 /etc/group 和 /etc/passwd 基本上类似。

        5.注释说明
        该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。不过,当使用 finger 的功能时就回显示这些信息。

        6.用户家目录
        当用户登录时就处在这个目录下。 root 的家目录是 /root,普通用户的家目录则为 /home/username ,这个字段是可以自定义的,比如建立一个普通用户 test1 ,要想让 test1 的家目录在 /data 目录下,只要修改 /etc/passwd 文件中的 test1 那行中的该字段为 /data 即可。

        7.shell
        用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是 shell 。Linux 的 shell 有很多中 sh 、csh 、ksh 、tcsh 、bash等,而 Redhat /CentOS 的 shell 就是 bash 。查看 /etc/passwd 文件,该字段中除了 /bin/bash 外还有 /sbin/nologin 比较多,它表示不允许该帐号登录。如果想建立一个帐号不让它登录,那么就可以把该字段改成 /sbin/nologin 默认是 /bin/bash。

chfn 更改用户的 finger

        在 /etc/passwd 文件中的第五个字段中所显示的信息,如何去设定:

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# chfn user11
Changing finger information for user11.
Name []: user11
Office []: user11's office
Office Phone []: 12345678
Home Phone []: 123456789
Finger information changed.
[root@localhost ~]# grep 'user11' /etc/passwd
user11:x:510:502:user11,user11's office,12345678,123456789:/home/user11:/sbin/nologin

        ‘chfn’ 命令可以修改用户的findger信息,比如name, office, office phone 以及 Home phone.修改完后,就会在/etc/passwd文件中的user11的那一行第五个字段中看到相关信息了,默认是空的。“grep” 命令,它是用来过滤指定关键词的行